import request from '@/utils/request'

/**
 * 获取菜单列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getMenuList(params) {
  return request({
    url: '/system/menu/list',
    method: 'get',
    params
  })
}

/**
 * 获取菜单树结构
 * @returns {Promise}
 */
export function getMenuTree() {
  return request({
    url: '/system/menu/tree',
    method: 'get'
  })
}

/**
 * 获取菜单详情
 * @param {number} id 菜单ID
 * @returns {Promise}
 */
export function getMenuDetail(id) {
  return request({
    url: `/system/menu/${id}`,
    method: 'get'
  })
}

/**
 * 创建菜单
 * @param {Object} data 菜单数据
 * @returns {Promise}
 */
export function createMenu(data) {
  return request({
    url: '/system/menu',
    method: 'post',
    data
  })
}

/**
 * 更新菜单
 * @param {number} id 菜单ID
 * @param {Object} data 菜单数据
 * @returns {Promise}
 */
export function updateMenu(id, data) {
  return request({
    url: `/system/menu/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除菜单
 * @param {number} id 菜单ID
 * @returns {Promise}
 */
export function deleteMenu(id) {
  return request({
    url: `/system/menu/${id}`,
    method: 'delete'
  })
}

/**
 * 更新菜单状态
 * @param {number} id 菜单ID
 * @param {number} status 状态值(1:正常;0:停用)
 * @returns {Promise}
 */
export function updateMenuStatus(id, status) {
  return request({
    url: `/system/menu/${id}/status`,
    method: 'patch',
    data: { status }
  })
}

/**
 * 获取当前用户菜单权限
 * @returns {Promise}
 */
export function getUserMenus() {
  return request({
    url: '/system/menu/userMenus',
    method: 'get'
  })
}

/**
 * 获取菜单选择数据（用于上级菜单选择）
 * @returns {Promise}
 */
export function getMenuSelectData() {
  return request({
    url: '/system/menu/select',
    method: 'get'
  })
}

/**
 * 根据角色获取菜单树
 * @param {number} roleId 角色ID
 * @returns {Promise}
 */
export function getMenuTreeByRole(roleId) {
  return request({
    url: `/system/menu/role/${roleId}`,
    method: 'get'
  })
}

/**
 * 获取用户路由菜单
 * @returns {Promise} 返回用户路由菜单数据
 */
export function getUserMenuRoutes() {
  return request({
    url: '/api/menu/routes',
    method: 'get'
  })
}

/**
 * 获取用户权限列表(权限标识)
 * @returns {Promise} 返回用户权限列表数据
 */
export function getUserPermissions() {
  return request({
    url: '/api/menu/permissions',
    method: 'get'
  })
} 